home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu005.dms / pu005.adf / Satellite Tracking / oscar.bas < prev    next >
BASIC Source File  |  1988-01-19  |  9KB  |  283 lines

  1. 1 REM W3IWI satellite tracker program for AMIGA, N3ET 5-22-86
  2. 5 REM New Keps 7/31/86
  3. 10 CLS:PRINT "       OSCAR.BAS"
  4. 15 PRINT     "  Use control C to quit program."
  5. 20 DEFDBL A-Z
  6. 30 L9=40.36:W9=75.28 :REM User's LAT & LONG in decimal degrees
  7. 33 H9=341 :REM USER'S HEIGHT in FEET above sea level (ASL)
  8. 34 H9=H9/3.281
  9. 35 PPL%=84 :REM Pinter Page Length
  10. 40 ZT=4/24 :REM For EDT ZT=4/24,  For EST ZT=5/24
  11. 43 IF ZT=4/24 THEN EXT$=" EDT " ELSE EXT$=" EST "
  12. 44 PRINT     "All times are";EXT$;"change ZT for other.":PRINT
  13. 45 DIM S$(20),C%(13),SM(20)
  14. 48    REM JOLIAN DAYS, +1 FOR LEAP YEAR, 1988 C%(3)=60,C%(4)=91 . . .
  15. 50 C%(1)=0:C%(2)=31:C%(3)=59:C%(4)=90:C%(5)=120:C%(6)=151
  16. 60 C%(7)=181:C%(8)=212:C%(9)=243:C%(10)=273:C%(11)=304:C%(12)=334
  17. 70    REM CONSTANTS
  18. 80 R0!=6378.16:G0=75369793000000#:G1=1.0027379093#:PI=3.141592653589793#
  19. 90 P2=2*PI:PR=PI/180:F=1/298.25:G2=.27601916#
  20. 100    REM SIDERAL TIME 365.246 DAYS/YEAR, USE BELOW FOR 1987 ETC.
  21. 110    REM 1987 G2=0.27535606 1988=0.27469296 1989=0.27676777
  22. 120 INPUT "HORIZON DEGREES (-90 to 0 to +90) ";E8%
  23. 130 INPUT "DURATION: (HOURS)";H1
  24. 140 INPUT "START EDT (MM,DD,YY,HH,MM) ";U1,U2,U3%,U4,U5
  25. 150    REM
  26. 160 RESTORE
  27. 165 IF PRT%=1 THEN CLOSE 1:PRT%=0
  28. 170 PRINT "PRINTER (Y/N) ? ";
  29. 175 GOSUB 2205
  30. 180 IF ZZ$="Y" THEN PRT%=1:OPEN "LPT1:" FOR OUTPUT AS 1
  31. 200 IF DISK%=1 THEN CLOSE 2:DISK%=0
  32. 210 PRINT "Disk (Y/N) ? ";
  33. 215 GOSUB 2205
  34. 230 IF ZZ$="Y" THEN INPUT "FILE NAME ";AA$:OPEN AA$ FOR OUTPUT AS 2:DISK%=1
  35. 240 T1=U2+C%(U1)+U4/24+U5/1440+ZT
  36. 250 T8=T1+H1/24
  37. 260 PRINT "START=";:PRINT USING "###.####";T1
  38. 270 PRINT " STOP=";:PRINT USING "###.####";T8
  39. 280 L8=L9*PR
  40. 290 S9=SIN(L8)
  41. 300 C9=COS(L8)
  42. 310 S8=SIN(-W9*PR)
  43. 320 C8=COS(W9*PR)
  44. 330 R9=R0!*(1-F/2+COS(2*L8)*(F/2))+H9/1000
  45. 340 L8=ATN((1-F)^2*S9/C9)
  46. 350 Z9=R9*SIN(L8)
  47. 360 X9=R9*COS(L8)*C8
  48. 370 Y9=R9*COS(L8)*S8
  49. 380 PRINT " # NAME SET EPOCH ORBIT"
  50. 390 PRINT "1=AUTO"
  51. 400 II%=3
  52. 410 READ S$,I$,Y0%,T0,I0,O0,E0,W0,M0,N0,K0&,F0!,SM(II%):S$(II%)=S$
  53. 420 IF S$="END" THEN 440
  54. 430 PRINT II%;S$;" ";I$;Y0%*1000+INT(T0);K0&:II%=II%+1:GOTO 410
  55. 440 INPUT "ENTER NUMBER";J%:IF J%<1 OR J%>II%-1 THEN 440
  56. 450 IF J%>2 THEN AU%=0:GOTO 480
  57. 460 AU%=1:FOR J%=3 TO II%-1:GOSUB 520:NEXT J%
  58. 470 GOTO 160
  59. 480 PRINT "STEP";SM(J%);"MINUTES, CHANGE (Y/N) ?";
  60. 485 GOSUB 2205:T9=SM(J%)
  61. 490 IF ZZ$="Y" THEN INPUT "STEP (MINUTES) ";T9
  62. 500 GOSUB 520:PRINT "C/R FOR NEXT";:GOSUB 2205
  63. 510 GOTO 160
  64. 520 T9=T9/1440
  65. 530 RESTORE
  66. 540 T7=T1:YQ%=U3%
  67. 550 REM  NAME, SET,YR,EPOCH    DAY,INCLINAT,RIGHT AS,ECCENTRIC
  68. 560 REM  ARG PERI,MEAN ANO,MEAN MOTION,ORBIT,BECON,STEP
  69. 570 DATA RS-3, 147,86,125.43826975,082.9567,112.0122,0.0059429
  70. 580 DATA 350.5098,009.4845,12.15593219,19440,29.321,5
  71. 590 DATA RS-4, 358,86,132.44847745,082.9557,123.5420,0.0020008
  72. 600 DATA 081.5773,278.7554,12.06668377,19382,29.360,5
  73. 610 DATA RS-5, 339,86,209.07496775,082.9425,084.4224,0.0010752
  74. 620 DATA 323.7314,036.2969,12.05056906,20279,29.450,5
  75. 630 DATA RS-6, 139,86,121.01729136,082.9597,117.9358,0.0051397
  76. 640 DATA 023.7993,336.5430,12.13568199,19354,29.450,5
  77. 650 DATA RS-7, 266,86,209.14841915,082.9577,077.8494,0.0021175
  78. 660 DATA 238.3055,121.5952,12.08699107,20341,29.500,5
  79. 670 DATA RS-8, 395,86,206.03178502,082.9565,089.6691,0.0020303
  80. 680 DATA 024.1570,336.0411,12.02957785,20207,29.500,5
  81. 690 DATA AO-9, 917,86,206.99954883,097.6525,210.0289,0.0001433
  82. 700 DATA 328.2759,031.8400,15.28560877,26689,145.825,5
  83. 710 DATA AO10, 253,86,209.05382805,026.6135,068.0004,0.6020244
  84. 720 DATA 130.4916,299.2253,02.05867687,02678,145.81,30
  85. 730 DATA AO11, 156,86,203.22200359,098.1462,269.6865,0.0014648
  86. 740 DATA 054.6327,305.6231,14.62060201,12748,145.825,5
  87. 750 DATA AO-8, 002,86,137.85726844,098.8191,117.3036,0.0005060
  88. 760 DATA 261.9180,098.1332,13.96664823,41799,29.402,5
  89. 770 DATA END,0,0,0,0,0,0,0,0,0,0,0,0,0
  90. 780      REM
  91. 790 READ S$,I$,Y0%,T0,I0,O0,E0,W0,M0,N0,K0&,F0!,SM
  92. 800 IF S$<>S$(J%) THEN 790
  93. 810 IF AU%=1 THEN T9=SM/1440
  94. 820 IF Y0%<>U3% THEN PRINT "UPDATE ELEMENT YEAR or ELEMENT SET":STOP
  95. 830 PRINT
  96. 840 PRINT S$;" ID:";I$;" REF:";T0;" AGE:";INT(T1-T0);" FQ:";F0!
  97. 850 E3=E0^2
  98. 860 E2=1-E3
  99. 870 E1=SQR(E2)
  100. 880 Q0=M0/360+K0&
  101. 890 A0=(G0/N0^2)^(1/3)
  102. 900 V=R0!/A0
  103. 910 K2=9.95*V^3.5/E2^2
  104. 920 V=I0*PR
  105. 930 S1=SIN(V)
  106. 940 C1=COS(V)
  107. 950 T=T7
  108. 960 GOSUB 1190
  109. 970 FL%=2
  110. 980 LN%=0
  111. 990 PRINT "CALCULATING":PRINT
  112. 1000     REM
  113. 1010 FOR T=T7 TO T8 STEP T9
  114. 1020  K7%=INT(T)
  115. 1030  Q=N0*(T-T0)+Q0
  116. 1040  K&=INT(Q)
  117. 1050  M9=INT((Q-K&)*256)
  118. 1060  M=(Q-K&)*P2
  119. 1070  IF FL%=0 THEN GOSUB 1190
  120. 1080  GOSUB 1350
  121. 1090  IF E9<E8% THEN 1130
  122. 1100  IF FL%>0 THEN FL%=2:GOSUB 1660:GOTO 1160
  123. 1110  T=T7+T9*INT((T-T7)/T9-1):FL%=1
  124. 1120  GOTO 1020
  125. 1130  IF FL%=1 THEN 1160
  126. 1140  D=R5*D*D*1E-09:FL%=0
  127. 1150  IF D>(.2/N0) THEN T=T+(.2/N0) ELSE T=T+D
  128. 1160 NEXT T:PRINT
  129. 1170 RETURN
  130. 1180    REM
  131. 1190 V=(T-T0)*K2
  132. 1200 O=(O0-V*C1)*PR
  133. 1210 S0=SIN(O)
  134. 1220 C0=COS(O)
  135. 1230 W=(W0+V*(2.5*C1^2-.5))*PR
  136. 1240 S2=SIN(W)
  137. 1250 C2=COS(W)
  138. 1260 V=S2*S0:V1=C2*S0:V2=C2*C0:V3=S2*C0
  139. 1270 D=V*C1
  140. 1280 XA=V2-D
  141. 1290 XB=-V3-V1*C1
  142. 1300 YA=V1+V3*C1
  143. 1310 YB=V2*C1-V
  144. 1320 ZA=S2*S1
  145. 1330 ZB=C2*S1
  146. 1340 RETURN
  147. 1350 E=M+E0+SIN(M)+.5*E3*SIN(2*M)
  148. 1360 S3=SIN(E):C3=COS(E):R3=1-E0*C3:M5=E-E0*S3-M
  149. 1370 IF ABS(M5)>.000001 THEN E=E-M5/R3:GOTO 1360
  150. 1380 XX=A0*(C3-E0)
  151. 1390 YY=A0*E1*S3
  152. 1400 R=A0*R3
  153. 1410 X1=XX*XA+YY*XB
  154. 1420 Y1=XX*YA+YY*YB
  155. 1430 G7=T*G1+G2:G7=(G7-INT(G7))*P2
  156. 1440 S7=-SIN(G7):C7=COS(G7)
  157. 1450 X=X1*C7-Y1*S7
  158. 1460 Y=X1*S7+Y1*C7
  159. 1470 Z=XX*ZA+YY*ZB
  160. 1480 X5=X-X9
  161. 1490 Y5=Y-Y9
  162. 1500 Z5=Z-Z9
  163. 1510 R5=SQR(X5^2+Y5^2+Z5^2)
  164. 1520 IF T6<>T THEN R8=((R6-R5)/(T6-T))/86400& ELSE R8=-8999999000#
  165. 1530 R6=R5:T6=T
  166. 1540 V=X5*C8+Y5*S8
  167. 1550 Z8=V*C9+Z5*S9
  168. 1560 S5=Z8/R5
  169. 1570 E9=ATN(S5/SQR(1-S5^2))/PR
  170. 1580 RETURN
  171. 1590 REM
  172. 1600 D=ATN(DY/DX)/PR:IF DX<0 THEN D=D+180:RETURN
  173. 1610 IF DX>0 THEN 1640
  174. 1620 IF DY>=0 THEN D=90 ELSE D=270
  175. 1630 RETURN
  176. 1640 IF DY<0 THEN D=D+360
  177. 1650 RETURN
  178. 1660 DX=Z5*C9-V*S9
  179. 1670 DY=Y5*C8-X5*S8
  180. 1680 GOSUB 1600
  181. 1690 A9=D
  182. 1700 DX=X
  183. 1710 DY=Y
  184. 1720 GOSUB 1600 
  185. 1730 B5=Z/R
  186. 1740 L5=ATN(B5/SQR(1-B5^2))/PR
  187. 1745   REM
  188. 1750 TZ=T-ZT:K7%=INT(TZ)
  189. 1760 TL%=1:IF T=TK+T9 THEN TL%=0
  190. 1770 IF TL%=0 AND KQ%=K7% AND LN%>0 THEN 1830
  191. 1780 I%=13:KQ%=K7%:IF KQ%>365 THEN KQ%=1:YQ%=86
  192. 1790 I%=I%-1:IF KQ%<C%(I%)+1 THEN 1790
  193. 1800 Q$=STR$(I%*10000+(KQ%-C%(I%))*100+YQ%)+" "
  194. 1810 PRINT " HOR";E8%;" DAY";K7%;Q$;"ORBIT";K&;S$;" ";I$:LN%=LN%+1
  195. 1820 IF PRT%=1 THEN PRINT#1," HOR";E8%;" DAY";K7%;Q$;"ORBIT";K&;S$;" ";I$
  196. 1830 H4=INT((TZ-K7%)*24+.0001):M4=INT((TZ-K7%)*1440-H4*60+.1)
  197. 1835 H4$=RIGHT$(STR$(10000+H4*100+M4),4)
  198. 1840 TK=T
  199. 1850 IF LN%>1 THEN 1880
  200. 1860 PRINT EXT$;" AZ  EL  D-HZ   R-KM   H-KM LAT LON PHS":LN%=LN%+1
  201. 1870 IF PRT%=1 THEN PRINT#1,EXT$;" AZ  EL  D-HZ   R-KM   H-KM LAT LON PHS"
  202. 1880    REM
  203. 1890 MO$="":IF S$<>"AO10" THEN 1925
  204. 1895 IF M9>=50 AND M9<=119 THEN MO$=" B"
  205. 1900 IF M9>=120 AND M9<=136 THEN MO$=" L"
  206. 1901 IF M9>=137 AND M9<=199 THEN MO$=" B"
  207. 1921 IF M9>=200 AND M9<=219 THEN MO$=" OFF"
  208. 1922 IF M9>=220 AND M9<=244 THEN MO$=" B"
  209. 1923 IF M9>=245 OR M9<=49 THEN MO$=" OFF"
  210. 1925 PRINT H4$;
  211.  PRINT USING "####";A9;
  212.  PRINT USING "####";E9;
  213.  PRINT USING "######";-F0!*R8/.2997925;
  214.  PRINT USING "#######";R5;
  215.  PRINT USING "#######";R-R0!;
  216.  PRINT USING "####";L5;
  217.  PRINT USING "####";360-D;
  218.  PRINT USING "####";M9;:LN%=LN%+1
  219.  PRINT MO$
  220.  IF PRT%=0 THEN 2030  :REM NOT PRINTER
  221. 1930 PRINT#1,H4$;
  222.  PRINT#1,USING "####";A9;
  223.  PRINT#1,USING "####";E9;
  224.  PRINT#1,USING "######";-F0!*R8/.2997925;
  225.  PRINT#1,USING "#######";R5;
  226.  PRINT#1,USING "#######";R-R0!;
  227.  PRINT#1,USING "####";L5;
  228.  PRINT#1,USING "####";360-D;
  229.  PRINT#1,USING "####";M9;
  230.  PRINT#1,MO$
  231.  IF LN%>PPL% THEN PRINT#1,CHR$(12):LN%=0
  232. 2030 IF DISK%=0 THEN 2160 :REM NOT DISK
  233.  IF TL%=1 THEN PRINT#2,Q$;S$;K&
  234.  PRINT#2,Q$;
  235.  PRINT#2,H4$;
  236.  PRINT#2,USING "####";A9;
  237.  PRINT#2,USING "####";E9;
  238.  PRINT#2,USING "######";-F0!*R8/.2997925;
  239.  PRINT#2,USING "#######";R5;
  240.  PRINT#2,USING "#######";R-R0!;
  241.  PRINT#2,USING "####";L5;
  242.  PRINT#2,USING "####";360-D;
  243.  PRINT#2,USING "####";M9;
  244.  PRINT#2,MO$
  245.      RETURN
  246. 2160 REM
  247. 2190 IF PRT%=1 OR LN%<23 THEN 2200
  248.      LN%=0:PRINT "QUIT (Y/N) ";
  249. 2195 GOSUB 2205
  250.      IF ZZ$="Y" THEN 160
  251. 2200 RETURN
  252.      REM
  253. 2205 ZZ$=INKEY$: IF ZZ$="" THEN 2205 ELSE PRINT ZZ$
  254.      IF ZZ$="y" THEN ZZ$="Y"
  255.      RETURN
  256.  REM S$=SAT NAME   A9=AZIM
  257.  REM I$=SAT ELEM   E9=ELEV       L9=STAT LAT
  258.  REM Y0%=SAT YEAR  L5=LAT        W9=STAT LONG
  259.  REM T0=SAT DAY    M9=PHASE      H9=STAT ELEV
  260.  REM I0=SAT INCL                 E8%=STAT HOR
  261.  REM O0=SAT RA     K7%=DAY       R0!=EARTH RAD
  262.  REM E0=SAT ECCE   T7=STRT TIME
  263.  REM W0=SAT AP     T8=STOP TIME
  264.  REM M0=SAT MA     T9=STEP TIME
  265.  REM N0=SAT MM     R5=RANGE
  266.  REM               H4=UTC HRS
  267.  REM K0&=SAT REV   M4=UTC MINS                 TL%=PRINT SEPA
  268.  REM F0!=SAT FREQ  R8=VELOCITY   MO$=AO10 MODE LN%=LINE COUNT
  269.  REM K2=d AP       W=NEW AP      FL%=FLAG      PR=PI RADIANS
  270.  REM 10703 78-026-B AO-8
  271.  REM 12888 81-100-B AO-9
  272.  REM 12997 81-120-A RS-3
  273.  REM 12998 81-120-B RS-8
  274.  REM 12999 81-120-C RS-5
  275.  REM 13000 81-120-D RS-4
  276.  REM 13001 81-120-E RS-7
  277.  REM 13002 81-120-F RS-6
  278.  REM 14129 83-058-B AO10
  279.  REM 14781 84-021-B AO11
  280.  REM 15935 85-066-A AO24 (NOT HAM)
  281.  REM 15936 85-066-B AO30 (NOT HAM)
  282.  
  283.